package com.weixing.mall.provider.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.weixing.mall.provider.model.domain.Order;
import com.weixing.mall.provider.model.vo.report.ActivityVo;
import com.weixing.mall.provider.model.vo.report.storage.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author jzy
 * @date 2020/6/5
 */
public interface DayReportStorageMapper  extends BaseMapper<Order> {

    /**
     * 02 仓储部--进出库存汇总表
     * @param page 分页
     * @param shipper 发货员
     * @param yearMonth 年月 例：2020-06
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 倒序正序
     * @return
     */
    IPage<StorageInAndOutDepotSummaryVo> storageInAndOutDepotSummary(Page page, Long shipper,Long depotId,String yearMonth, String startTime, String endTime, String sortField, String sortType);

    /**
     * 02 仓储部--进出库存汇总表-进库明细
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageInDepotDetailVo> storageInDepotDetail(Page page, @Param("ew") Wrapper<?> var2);
    /**
     * 02 仓储部--进出库存汇总表-出库明细
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageOutDepotDetailVo> storageOutDepotDetail(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 03 仓储部--活动销售日报
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageActivitySalesVo> activitySalesReport(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 03 仓储部--活动销售日报-详细数据
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageActivitySalesDetailVo> activitySalesReportDetail(Page page, @Param("ew") Wrapper<?> var2);



    /**
     * 04 仓储部--做货样衣报表
     * @param page 分页
     * @param type 类型 1样衣 3做货
     * @param yearMonth 年月 例：2020-06
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 倒序正序
     * @return
     */
    IPage<StorageDoSampleVo> storageDoAndSample(Page page, Integer type,Long depotId, String yearMonth, String startTime, String endTime, String sortField, String sortType);

    /**
     * 05 仓储部-换货报表
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageExchangeReportVo> exchangeReport(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 05 仓储部-换货报表2
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageExchangeReport2Vo> exchangeReport2(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 06 仓储部-正价退货报表
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageRegularReturnVo> regularReturnReport(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 06-2 仓储部-正价退货报表
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageRegularReturnVo> regularReturnReport2(Page page, @Param("ew") Wrapper<?> var2);
    /**
     * 07 仓储部-出入库报表
     * @param page 分页
     * @param billType 出入库类型  1入库 2出库
     * @param catId 类型Id
     * @param goodsSn 货号
     * @param styleNo 款号
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 倒序正序
     * @return
     */
    IPage<StorageOutAndInReportVo> outAndInReport(Page page, Integer billType, Long catId, String goodsSn, String styleNo, String startTime, String endTime, String sortField, String sortType);

    /**
     * 08 仓储部-次品报表
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageDefectReportVo> defectReport(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 08 仓储部-次品报表-详细数据
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageDefectReportDetailVo> defectReportDetail(Page page, @Param("ew") Wrapper<?> var2);

    /**
     * 08 仓储部-次品报表-详细数据-2
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageDefectReportDetailVo> defectReportDetail2(Page page, @Param("ew") Wrapper<?> var2);


    /**
     * 获取订单的map分页
     * @param page
     * @param var2
     * @return
     */
    IPage<Map<String,Object>> orderPageMaps(Page page, @Param("ew") Wrapper<?> var2);


    /**
     * 09 仓储部-库存截留报表
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageInterceptVo> storageIntercept(Page page, @Param("ew") Wrapper<?> var2);

    /**
     *  09 仓储部-库存截留报表-详细数据
     * @param page
     * @param var2
     * @return
     */
    IPage<StorageInterceptDetailVo> storageInterceptDetail(Page page, @Param("ew") Wrapper<?> var2);

    List<ActivityVo> activityList(@Param("ew") Wrapper<?> var2);

}
